原帖 | Jack | 2024-09-17 21:53 | 👍0 | 阅读约1
Q: 使用CUBEMX配置硬件在正常开发流程中会经常用到吗?是只在测试某个单元的时候使用?还是整个项目周期都会使用?感觉CUBEMX生成的代码结构和自己代码结构有些出入,实际使用起来有点乱.
答:根据个人和项目的情况,这个没有绝对的答案,仅仅是实现路径的差别而已。
关于Cubemx本质上是什么:
Cubemx只是一个通过选项选择来将它背后的一套已经验证过HAL库的初始化代码拼凑出来给你用的工具。
个人层面来讲:
Cubemx在项目开发前期(硬件选型确定后),移植操作系统,开发BSP程序时,用Cubemx可以节约片上外设初始化,Freertos移植的时间。但是手工移植和初始化这些外设也不是不行,如果你能逐步移植和初始化(你理解每一步做什么,而不是去网上Copy)到你正确想要的状态,那最好不过。
项目层面上来讲:
Cubemx能够加快最开始的BSP和操作系统甚至文件系统移植的速度,但是其在一定程度上也让用户容易忽略具体的初始化过程,(比如,在初始化串口和DMA时,可能它初始化的DMA模式是Normal,但是用户可能默认以为它是cycle),这增加了一点点的项目细节风险,但对于其提供的便利性来说无可厚非。因此,对于Cubemx的使用,既然要其速度,那我们也要配备相应检测手段,来确保这个工具是按照我们的目标运行的。如果要了解Cubemx具体如何操作了我们的项目,就要去我们后面作业中提到的,使用VScode差异对比,系统System View里去观察最终外设状态情况,来确保Cubemx是按照我们的意图在执行初始化。
另外,Cubemx的工程代码生成是基于芯片厂商的角度来思考的,它把OS归于了中间件,我们的课程是依照项目角度来看的,所以把RTOS分到了OS层面。
市场上来讲,目前越来越多的公司使用Cubemx,但大部分是在做BSP和系统移植时直接用Cubemx生成好初始化,后期就不再操作Cubemx了。
相关笔记